Many communication architectures follow a layered model in which the lowest layer deals with physical transmission media and progressively higher layers perform higher level communication services until, at a selected intermediate or the highest layer, communication with some final process or user is achieved. At a processing node, the layered approach isolates the functions performed in one layer from the details of operation required to perform the functions of the lower layers. Between data processing nodes, functions at the same layers are considered to be peer functions that interact with each other during communication using the layered protocols. At a single node, processes in one layer obtain services from processes in the adjacent lower layer.
A problem that can arise between nodes and between layers within a node is the synchronization of the protocols that occur between the peer layers. Such problems can occur in some circumstances precisely because of the intentional isolation built-in between the layers of a node in the layered environment. For example, conflicting protocol operations might be initiated substantially at the same time by peer upper layers of two communicating nodes. These initiated operations set in motion other protocol operations between peer lower layers of the same nodes. The lower layers may be able to recognize and resolve the resulting conflicting operations at their layer. However, because of the logical isolation between a lower layer and an upper layer in one node, the upper layers may not be able to recognize and easily resolve their corresponding operations.
One example of the above problem can occur in the context of a nonactivation XID (Exchange Identification) exchange between two nodes. A nonactivation XID message is a message that is used within SNA (System Network Architecture) to change the operating parameters of a link between two nodes after the link has been initially established. For example, a nonactivation XID can be used to change the type of network services that are delivered over a link from those initially requested when the link was established, or to change the logical identification of the link. The nonactivation XID allows link parameters such as these to be dynamically changed without requiring that the link be disconnected and completely reestablished. FIG. 1 shows one illustrative example of the problem. The nonactivation XID messages are initiated by processes in the network layer in response to certain system stimuli and are sent by the network layer to the data link control (DLC) layer for delivery to the other node. To completely understand the problem, it is understood that the DLC layers are executing independent processes for sending messages and receiving messages. The essentials for these state machines are shown in FIGS. 9 and 10, respectively. These state machines follow the rules set forth for the IEEE 802.2 protocol as specified in the publication AN AMERICAN NATIONAL STANDARD; IEEE STANDARDS FOR LOCAL AREA NETWORKS; LOGICAL LINK CONTROL (ANSI/IEEE 802.2-1985; ISO DRAFT INTERNATIONAL STANDARD 8802/2). Essentially, a DLC has a send message state machine (FIG. 9) and a receive message state machine (FIG. 10). In the send process, a DLC in the SEND COMMAND state sends a command marked as such to another DLC and enters a WAITING RESPONSE state. It stays in the WAITING RESPONSE state until it receives a response from the other node or until it times out, at which time it returns to the SEND COMMAND state. Independently of this send process, a DLC receive process initially starts in a WAITING COMMAND state. When it receives a command from another DLC, it enters a RESPONSE state in which the next message it sends to another DLC is sent and marked as a response. It then returns to the WAITING COMMAND state. The independence of these DLC state machines, as will be seen, as well as other factors, causes the difficulties solved herein.
Returning to FIG. 1, node A is in communication with node B via a physical link 100. It is assumed that this link has been established at some prior time by appropriate protocol message flows. At 102 and 104, a separate event in each node simultaneously triggers the network layer in the corresponding node to send a nonactivation XID message to the other node. The network layers have no concept of command and response that is present in the DLC layers. They merely tell their lower data link control (DLC) layer to transmit the message over the link 100 to the other node, thereby beginning a sequence of operations to change the link in some manner. However, the protocol executed at the DLC layer proceeds according to command and response. That is, when a DLC sends a message marked as a command to another DLC, it expects a message from the other DLC marked as a response. Because neither DLC at 102 and 104 owe the other DLC any response at this point, both nodes transmit the messages as commands. This is illustrated by the box C (for command) shown at 106 and 108. These DLC layers pass these messages to their respective network layers at 110 and 112. Each of the network layers may continue to send nonactivation XIDs to the other node as long as required to satisfy the protocol requirements of the network layer. For this discussion, it is assumed that only one such message is required. Therefore, after the messages are sent as commands by the DLC at 106 and 108, each of the DLCs then expects to receive a response to the command. Since the protocol exchange is satisfied as far as the network layers are concerned, no stimulus is given by either network layer to its DLC to perform any other transmission. Therefore, no messages that are treated as responses are transmitted. The protocols between the layers of each node are now out of synchronization. Eventually, the DLC layers timeout waiting for their expected responses. It is assumed that node A times out first at 114 and retransmits its earlier nonactivation XID. This message initiates a brand new round of events in the DLC and network layers of node B. Eventually Node B times out waiting for its response at 116 and retransmits its earlier nonactivation XID message as well. Exactly how and when this nonsynchronization is resolved by both nodes and the layers within the nodes is unpredictable.
A common solution to the above problem in the known art is the use of sequence numbering in the link messages. With the use of such sequence numbers, a layer is able to determine what responses correspond with which commands, whether a given message is a retransmission of a previous one, and the like. And with such information, a protocol is able to avoid the above problem. However, some protocols do not permit the use of sequence numbers, e.g., XID messages do not. This problem arises primarily in such protocol systems.